home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 2 / Gekikoh Dennoh Club Vol. 2 (Japan).7z / Gekikoh Dennoh Club Vol. 2 (Japan) (Track 01).bin / kowin / font / tcwin24d.lzh / tc_load.c < prev    next >
C/C++ Source or Header  |  1993-04-07  |  4KB  |  171 lines

  1. /****************************/
  2.  
  3.     TC_WIN.win
  4.  
  5.     TC font loader        1991 1/28 小笠原博之
  6.                 SPS-NET: SPS0783 COR.
  7.  
  8. /****************************/
  9.  
  10. #include    <stdio.h>
  11. #include    <wlib.h>
  12. #include    "tc_win.h"
  13.  
  14. extern    char    *tcfont;
  15. extern    UskMes();
  16.  
  17. int    defchar= 0;
  18.  
  19. /****************************************/
  20. /*    .fon ファイルの読み込み        */
  21. /****************************************/
  22. char *
  23. Tc_load( wp, fname )
  24. WindowID    wp;
  25. unsigned char    *fname;
  26. {
  27.     FILE    *fp;
  28.     unsigned char    *ptr= (unsigned char*)tcfont;
  29.     UskMes( "読み込み中", wp );
  30.     defchar= 0;
  31.     if( fp= fopen( fname, "rb" ) ){
  32.         int    i;
  33.         for( i= 0 ; i< 16 ; i++, ptr+= (72*16) /*512*/ ){
  34.             int    k;
  35.             for( k=0 ; k<16 ; k++ ){
  36.                 int        j;
  37.                 unsigned char    *pptr= ptr+k*3;
  38.                 for( j=0 ; j<24 ; j++, pptr+= (16*3) ){
  39.                     int    a;
  40.                     if( (a= getc(fp))<0 )
  41.                         break;
  42.                     *pptr=   ~a;
  43.                     pptr[1]= ~getc(fp);
  44.                     pptr[2]= 255;
  45.                 }
  46.                 defchar++;
  47.                 if( feof( fp ) )
  48.                     break;
  49.             }
  50.         }
  51.         while( !feof( fp ) ){
  52.             int    j;
  53.             for( j=0 ; j<48 ; j+=3 ){
  54.                 int    i;
  55.                 unsigned char    *pptr= (unsigned char*)(ptr+j);
  56.                 for( i=0 ; i<24 ; i++, pptr+= 16*3 ){
  57.                     int    a;
  58.                     if( (a= getc(fp))<0 )
  59.                         goto    loopexit;
  60.                     *pptr=   ~a;
  61.                     pptr[1]= ~getc(fp);
  62.                     pptr[2]= ~getc(fp);
  63.                 }
  64.                 if( defchar++ >= MaxChar ){
  65.                     fclose( fp );
  66.                     return    "Warning:データが多すぎます!";
  67.                 }
  68.             }
  69.             ptr+= 72*16/*512*/;
  70.         }
  71.     loopexit:
  72.         fclose( fp );
  73.     }else{
  74.         *fname= '\0';
  75.         return    "ファイルが見付かりません";
  76.     }
  77.     UskMes( "読み込み終了", wp );
  78.     return    0;
  79. }
  80.  
  81. /****************************************/
  82. /*    .fon ファイルの書き込み        */
  83. /****************************************/
  84. Tc_save( wp, fname )
  85. WindowID    wp;
  86. unsigned char    *fname;
  87. {
  88.     FILE    *fp;
  89.     unsigned char    *ptr= (unsigned char*)tcfont;
  90.     extern    int    editflag;
  91.  
  92.     if( defchar <= 0 ){
  93.         UskMes( "セーブ範囲が設定されていません", wp );
  94.         return;
  95.     }
  96.     if( fp= fopen( fname, "wb" ) ){
  97.         int    i;
  98.         int    save= defchar;
  99.         UskMes( "書き込み中", wp );
  100.         for( i=0 ; i<16 ; i++, ptr+= 72*16/*512*/ ){
  101.             int    k;
  102.             for( k=0 ; k<16 ; k++ ){
  103.                 int        j;
  104.                 unsigned char    *pptr= ptr+k*3;
  105.                 for( j=0 ; j<24 ; j++, pptr+= 16*3/*32*/ ){
  106.                     putc( ~(*pptr), fp );
  107.                     putc( ~(pptr[1]), fp );
  108.                 }
  109.                 if( --save <= 0 )
  110.                     break;
  111.             }
  112.             if( save <= 0 )
  113.                 break;
  114.         }
  115.         while( save>0 ){
  116.             int    j;
  117.             for( j=0 ; j<48 ; j+=3 ){
  118.                 int    i;
  119.                 unsigned char    *pptr= (unsigned char*)(ptr+j);
  120.                 for( i=0 ; i<24 ; i++, pptr+= 16*3 ){
  121.                     putc( ~(*pptr), fp );
  122.                     putc( ~(pptr[1]), fp );
  123.                     putc( ~(pptr[2]), fp );
  124.                 }
  125.                 if( --save <= 0)
  126.                     break;
  127.             }
  128.             ptr+= 72*16/*512*/;
  129.         }
  130.         fflush( fp );
  131.         if( ferror() ){
  132.             UskMes( "書き込みエラー", wp );
  133.         }else{
  134.             UskMes( "書き込み正常終了しました", wp );
  135.             editflag= FALSE;
  136.         }
  137.         fclose( fp );
  138.     }else
  139.         UskMes( "ファイルがOPENできません", wp );
  140. }
  141.  
  142. /****************************************/
  143. /*    ファイル名を得る        */
  144. /****************************************/
  145. setfname( fname )
  146. char    *fname;
  147. {
  148.     if( !strchr( fname, '.' ) )
  149.         strcat( fname, ".fon" );
  150. }
  151.  
  152. /****************************************/
  153. /*    ファイル名の変更        */
  154. /****************************************/
  155. Tc_rename( wp, fname )
  156. WindowID wp;
  157. char    *fname;
  158. {
  159.     extern    int    editflag;
  160.     char    strbuf[256];
  161.     UskMes( "ファイル名を入力して下さい", wp );
  162.     lineinput( strbuf );
  163.     if( *strbuf ){
  164.         strcpy( fname, strbuf );
  165.         UskMes( "ファイル名を変更しました", wp );
  166.         editflag= TRUE;
  167.     }else
  168.         UskMes( "キャンセルしました", wp );
  169. }
  170.  
  171.